/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package gradius.Elementos.Tiros;

import gradius.Elementos.Elemento;
import gradius.InterfaceGrafica.TelaGrafica;
import gradius.Util.MP3Player;

/** Classe que define os atributos e métodos dos tiros
 * @author Eduardo
 */
public abstract class Tiro extends Elemento
{
    private int danoTiro;
    private int stepX; //quantos pixels o tiro pula por vez
    private int stepY;
    protected MP3Player pl = new MP3Player();

    /** Construtor da classe Tiro
     * @param tela - Painel de desenho do jogo
     * @param coordX - Coordenada do eixo horizontal
     * @param coordY - Coordenada do eixo vertical
     * @param stepX - Sentido do elemento no eixo horizontal (direita ou esquerda)
     * @param stepY - Sentido do elemento no eixo vertical (cima ou baixo)
     * @param tamX - Largura em pixels do elemento no eixo horizontal
     * @param tamY - Largura em pixels do elemento no eixo vertical
     */
    public Tiro(TelaGrafica tela, int coordX, int coordY, int stepX, int stepY,int tamX, int tamY)
    {
        super(tela,coordX,coordY,tamX,tamY);
        this.stepX=stepX;
        this.stepY=stepY;
    }

    /** Método que determina o sentido do tiro
     * @param stepX - Sentido do elemento no eixo horizontal (direita ou esquerda)
     * @param stepY - Sentido do elemento no eixo vertical (cima ou baixo)
     */
    public void setSentidoTiro (int stepX, int stepY)
    {
        this.setStepX(stepX);
        this.setStepY(stepY);
    }

    /** Método para setar o dano que o tiro provoca no inimigo
     * @param danoTiro - Dano provocado por determinado tiro
     */
    public void setDanoTiro (int danoTiro)
    {
        this.danoTiro=danoTiro;
    }

    /** Método que retorna o poder de dano que o tiro provoca no inimigo
     * @return int - Poder de dano do tiro
     */
    public int getDanoTiro ()
    {
        return this.danoTiro;
    }

    /** Método para setar o deslocamento do tiro na horizontal
     * @param stepX - Sentido do elemento no eixo horizontal (direita ou esquerda)
     */
    public void setStepX (int stepX)
    {
        this.stepX=stepX;
    }

    /** Método que retorna o deslocamento do tiro na horizontal
     * @return int - Quantidade de pixels que o tiro se desloca na horizontal
     */
    public int getStepX ()
    {
        return this.stepX;
    }

    /** Método para setar o deslocamento do tiro na vertical
     * @param stepY - Sentido do elemento no eixo vertical (cima ou baixo)
     */
    public void setStepY (int stepY)
    {
        this.stepY=stepY;
    }

    /** Método que retorna o deslocamento do tiro na vertical
     * @return int - Quantidade de pixels que o tiro se desloca na vertical
     */
    public int getStepY ()
    {
        return this.stepY;
    }

    /** Método que faz o tiro se mover na tela
     */
    public void moveTiro()
    {
        this.incrementaElementoCoordenada(this.stepX,this.stepY);
    }

}
